use std::io;
pub fn test_fibonacci(){
    println!("input the positive number for fibonacci, that should lees than 256");
    let mut n = String::new();
    io::stdin().read_line(&mut n).expect("failed to read line");
    println!{"read data: {}",n};
    let n : usize = n.trim().parse().expect("input is not a number");
    let result = fibonacci(n);
    println!("the fibonacci {} result is {}",n,result);
}


fn fibonacci(n: usize)  -> u128 {
    if n==0 {
        return 0;
    }

    if n==1  {
        return 1;
    }

    // 这个做法， 一旦到了  40 就有点卡， 50， 就半天出不来， 所以要优化， 缓存已知的值， 不再计算
    // 有可能递归太深， 导致栈溢出。 这个就不好处理了。  这个就要用hashMap 缓存起来试下了， 50的结果终于算出 来了
    // 经过了约3分钟吧   12586269025  
    fibonacci(n-1) + fibonacci(n-2)
}